import HWSDKService from './hwSDKService';
const remote = window.electron.remote;
export default class NativeWndService {
	static setNativeWndNotifyFunc = async () => {
		const loginLogicService = await new HWSDKService();
		loginLogicService.setNotifyFunc(202, NativeWndService.handleNotifyOnSdkDisconnected);
		loginLogicService.setNotifyFunc(203, NativeWndService.handleNotifyOnKickedOut);
		loginLogicService.setNotifyFunc(204, NativeWndService.handleNotifyOnConfState);
		loginLogicService.setNotifyFunc(205, NativeWndService.handleNotifyOnConfInfo);
		loginLogicService.setNotifyFunc(206, NativeWndService.handleNotifyOnClickInConfBtn);
		loginLogicService.setNotifyFunc(209, NativeWndService.handleNotifyOnConfLists);
	};
	/**
	 * 收到该通知时，表示与SDK的连接断开了。
	 * @param {*} data
	 */
	static handleNotifyOnSdkDisconnected(data) {
		remote.dialog.showMessageBox({
			type: 'info',
			title: 'Notify',
			message: 'OnSdkDisconnected',
			buttons: ['ok'],
		});
	}
	/**
	 * 收到该通知时，表示当前使用的帐号被其他终端踢出，退出登录状态，需要重新登录。
	 * @param {*} data
	 */
	static handleNotifyOnKickedOut(data) {
		console.log('账号被踢出登录');
		// remote.dialog.showMessageBox({
		// 	type: 'info',
		// 	title: 'Notify',
		// 	message: 'OnKickedOut',
		// 	buttons: ['ok'],
		// });
		localStorage.clear();
		window.location.hash = '/#/';
	}
	/**
	 * 收到该通知时，表示会议状态发生变更。
	 * @param {*} data
	 */
	static handleNotifyOnConfState(data) {
		// console.log('会议状态改变', JSON.stringify(data));
		// remote.dialog.showMessageBox({
		//     type:'info',
		//     title: 'Notify',
		//     message: 'OnConfState:' + data.data.data.state,
		//     buttons:['ok']
		// })
	}
	/**
	 * 收到该通知时，表示会议中的信息发生变更。
	 * @param {*} data
	 */
	static handleNotifyOnConfInfo(data) {
		// console.log('会议信息改变', JSON.stringify(data));
		// remote.dialog.showMessageBox({
		//     type:'info',
		//     title: 'Notify',
		//     message: 'OnConfInfo:url:' + data.data.data.url + ',subject:' + data.data.data.subject + ',role:' + data.data.data.role + ',confId:' + data.data.data.confId + ',chairmanPwd:' + data.data.data.chairmanPwd + ',generalPwd:' + data.data.data.generalPwd,
		//     buttons:['ok']
		// })
	}
	/**
	 * 收到该通知时，表示会中点击自定义按钮通知。
	 * @param {*} data
	 * @param {*} btn 0:邀请按钮  1:呼叫其他号码按钮  2:与会者按钮  3:共享按钮  4:离开会议按钮  5:用户自定义按钮
	 */
	static handleNotifyOnClickInConfBtn(data) {
		// console.log(data);
		// remote.dialog.showMessageBox({
		//     type:'info',
		//     title: 'Notify',
		//     message: 'handleNotifyOnClickInConfBtn',
		//     buttons:['ok']
		// })
		switch (data.data.data.btn) {
			case 0:
				const browserWindow = window.electron.remote.getCurrentWindow();
				// browserWindow.show();
				browserWindow.setAlwaysOnTop(true);
				browserWindow.setAlwaysOnTop(false);
				window.location.hash = '#/Layout/AddAttendees';
				break;
			case 1:
				break;
			case 2:
				break;
			case 3:
				break;
			case 4:
				break;
			case 5:
				break;
			default:
				break;
		}
	}
	/**
	 * 收到会议列表通知。
	 * @param {*} data
	 */
	static handleNotifyOnConfLists(result) {
		console.log('收到会议列表通知');
		console.log(result);
		// remote.dialog.showMessageBox({
		//     type:'info',
		//     title: 'Notify',
		//     message: 'OnConfLists',
		//     buttons:['ok']
		// })
		let list;
		let data = result.data.data;
		let _confListInfo = window.sessionStorage.getItem('confListInfo');
		let _confListInfoParse = _confListInfo&&_confListInfo!='null' ? JSON.parse(_confListInfo) : [];
		// 0全量，1新增，2删除
		switch (data.updateType) {
			case 0:
				list = data.confListInfo;
				break;
			case 1:
				list = [..._confListInfoParse, ...data.confListInfo];
				break;
			case 2:
				data.confListInfo.forEach(item => {
					var index = _confListInfoParse.findIndex(v => v.confId === item.confId);
					_confListInfoParse.splice(index, 1);
				});
				list = _confListInfoParse;
				break;
		}
		let sesstionData = list.length > 0 ? JSON.stringify(list) : null;
		window.sessionStorage.setItem('confListInfo', sesstionData);
	}
}
